package com.buddy.leetcode._15;


/**
 * 编写一个函数来查找字符串数组中的最长公共前缀。
 * 如果不存在公共前缀，返回空字符串 ""。
 * 示例 1:
 *      输入: ["flower","flow","flight"]
 *      输出: "fl"
 *
 * 示例 2:
 *      输入: ["dog","racecar","car"]
 *      输出: ""
 *      解释: 输入不存在公共前缀。
 *
 * 说明:
 * 所有输入只包含小写字母 a-z 。
 */
public class LongestCommonPrefix {

    public String longestCommonPrefix(String[] strs) {
        if (strs == null || strs.length == 0) return "";
        StringBuilder res = new StringBuilder();
        /**
         * i++ 取值 复制 +1 返回 ;
         * ++i 取值 +1 返回
         * 因为for循环的执行顺序导致i++和++i循环效果是一样的
         */
        for (int i = 0;i<strs[0].length();++i){
            char c = strs[0].charAt(i);
            for (int j = 1 ; j< strs.length;++j){
                if (strs[j].length() <= i || c != strs[j].charAt(i) ) return res.toString();
            }
            res.append(c);
        }
        return res.toString();
    }

    public static String longestCommonPrefix_2(String[] strs){
        if (strs == null || strs.length == 0) return "";
        for (int i = 0;i<strs[0].length();++i){
            for (int j = 1;j<strs.length;++j){
                if (strs[j].length()<= i || strs[0].charAt(i) != strs[j].charAt(i)){
                    return strs[j].substring(0,i);
                }
            }
        }
        return strs[0];
    }

    public static void main(String[] args){
     System.out.println(longestCommonPrefix_2(new String[]{"a","a","b"}));
    }
}
